package a_doubleWrite;

import util.ListNode;

/**
 * 24. 两两交换链表中的节点
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 *
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 * @author: luolidong
 * @create: 2021-07-19 15:06
 * @version: 1.0
 */
public class L24 {
    public ListNode swapPairs(ListNode head) {
        if(head==null||head.next==null) return head;

        ListNode dummy=new ListNode(0);
        dummy.next=head;
        ListNode cur=head,pre=dummy;
        while (cur!=null&&cur.next!=null){
            ListNode next=cur.next;
            cur.next=next.next;
            next.next=cur;
            pre.next=next;

            pre=cur;
            cur=cur.next;

        }
        return dummy.next;
    }
}
